/*
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */

package org.apache.airavata.metcat.db.workflowmodel;

import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.ThriftKsDef;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.ColumnSlice;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.hector.api.query.QueryResult;
import me.prettyprint.hector.api.query.SliceQuery;
import org.apache.airavata.metcat.db.ModelAPI;
import org.apache.airavata.metcat.db.ModelConfig;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class WorkflowProgress {

    private ModelAPI modelapi;


    public WorkflowProgress() {
        modelapi = new ModelAPI();
    }

    /**
     * @param workflowID
     * @param timestamp
     * @param eventID
     */
    public void setWorkflowData(String workflowID, String timestamp, String eventID) {
       modelapi.InsertDataToColumnFamily(ModelConfig.WORKFLOW_PROGRESS_COLUMN_FAMILY,workflowID,timestamp,eventID);
    }



    // Get last event for a given workflow ID
    public String getLastEvent(String workflowID)
    {

        return modelapi.getLastColumnValue(ModelConfig.WORKFLOW_PROGRESS_COLUMN_FAMILY,workflowID);
    }

    //Get Map of all events for a given workflow ID
    public HashMap<String,String> getWorkflowprogress(String workflowID)
    {
       return modelapi.getAllRowData(ModelConfig.WORKFLOW_PROGRESS_COLUMN_FAMILY,workflowID);
    }

    //Get list of events between a given timestamp range for a given workflowID
    public List<String> getEventsForATimeDuration(String workflowID, String timestamp1, String timestamp2) {
       return modelapi.getAllDatafor(ModelConfig.WORKFLOW_ITERATOR_COLUMN_FAMILY,workflowID,timestamp1,timestamp2);
    }


}
